package de.revdev.streckenliste.dao;

import de.revdev.streckenliste.entities.Benutzer;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Root;

/**
 *
 * @author f.lindermaier
 */
@Stateless
@LocalBean
public class BenutzerDAO extends AbstractDAO<Benutzer> {

    @PersistenceContext(unitName = "Streckenliste-ejbPU")
    private EntityManager em;

    public BenutzerDAO() {
        super(Benutzer.class);
    }

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public Benutzer findByEMail(String email) {
        CriteriaBuilder cb = getEntityManager().getCriteriaBuilder();
        CriteriaQuery<Benutzer> cq = cb.createQuery(Benutzer.class);
        Root<Benutzer> c = cq.from(Benutzer.class);
        cq.select(c);
        ParameterExpression<String> p = cb.parameter(String.class);
        cq.where(cb.equal(c.get("email"), p));
        TypedQuery tq = getEntityManager().createQuery(cq);
        return (Benutzer)tq.setParameter(p, email).getSingleResult();
    }
}
